The evolution of virtualization techniques in information technology has led to a variety of applications, from cloud-based computing to embedded systems in mobile phones. In general, virtualization obscures hardware characteristics of a computing platform and, instead, presents an abstract platform that can host other platforms, including complete operating systems. One popular virtualization technique is to deploy a hypervisor (also known as a virtual machine manager), which can allow guest software (including complete operating systems) to run concurrently on an abstract host platform. The hypervisor can provide a simulated computing environment, often referred to as a “virtual machine,” for its guest software. Thus, multiple disparate operating systems can run in separate virtual partitions under a hypervisor on a single chassis, for example. Virtual machines can also be migrated (under live conditions) between hosts. However, efficiently managing resources in a virtual environment continues to present significant challenges to developers and operators alike.